package main

import (
	"fmt"
	"reflect"
)



func WhatIsYourType(i interface{}) string{
	val := reflect.ValueOf(i)
	return val.Kind().String()
}











func main(){
	type cat struct{

	}
	ins := &cat{}

	typeOfCat := reflect.TypeOf(ins)

	fmt.Printf("name %v kind %v \n", typeOfCat.Name(), typeOfCat.Kind())

	typeOfCat = typeOfCat.Elem()
	fmt.Printf("name %v kind %v \n", typeOfCat.Name(), typeOfCat.Kind())


	str := []string{"go", "lang", "reflect"}
	i := 22
	sit := map[string] string { "key1":"go", "key2":"lang", "key3":"reflect"}
	fmt.Println(WhatIsYourType(str))
	fmt.Println(WhatIsYourType(i))
	fmt.Println(WhatIsYourType(sit))






}